ইনহেরিটেন্স (Inheritance) এবং পলিমরফিজম (Polymorphism) হলো C++ প্রোগ্রামিংয়ের অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি প্রধান ধারণা। এগুলো প্রোগ্রামে কোড পুনঃব্যবহারযোগ্যতা, সংহতি, এবং ডায়নামিক বৈশিষ্ট্য প্রদান করে, যা সফটওয়্যার ডেভেলপমেন্টকে সহজ করে তোলে।
ইনহেরিটেন্স হলো একটি প্রক্রিয়া যার মাধ্যমে একটি ক্লাস (ডেরাইভড বা সাবক্লাস) আরেকটি ক্লাসের (বেস ক্লাস বা সুপারক্লাস) গুণাবলি এবং আচরণ (ডেটা মেম্বার এবং মেম্বার ফাংশন) অর্জন করে। ইনহেরিটেন্সের মাধ্যমে কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায় এবং ক্লাসগুলির মধ্যে একটি সম্পর্ক তৈরি হয়।
ধরা যাক, আমরা একটি Vehicle
বেস ক্লাস তৈরি করবো এবং তার থেকে Car
এবং Bike
নামের দুটি ডেরাইভড ক্লাস তৈরি করবো।
#include <iostream>
using namespace std;
// বেস ক্লাস
class Vehicle {
public:
string brand = "Generic Brand";
void honk() {
cout << "Beep! Beep!" << endl;
}
};
// ডেরাইভড ক্লাস
class Car : public Vehicle {
public:
int doors = 4;
};
// ডেরাইভড ক্লাস
class Bike : public Vehicle {
public:
bool hasCarrier = true;
};
int main() {
Car myCar;
Bike myBike;
cout << "Car Brand: " << myCar.brand << endl; // বেস ক্লাসের মেম্বার
myCar.honk(); // বেস ক্লাসের মেম্বার ফাংশন
cout << "Car Doors: " << myCar.doors << endl;
cout << "Bike Brand: " << myBike.brand << endl; // বেস ক্লাসের মেম্বার
myBike.honk(); // বেস ক্লাসের মেম্বার ফাংশন
cout << "Has Carrier: " << (myBike.hasCarrier ? "Yes" : "No") << endl;
return 0;
}
বর্ণনা:
Vehicle
হলো বেস ক্লাস, যা Car
এবং Bike
ক্লাসের জন্য ইনহেরিটেড হয়েছে।Car
এবং Bike
তাদের নিজস্ব মেম্বার এবং বৈশিষ্ট্য ধারণ করে, তবে তারা Vehicle
ক্লাসের brand
মেম্বার এবং honk()
মেথডও ব্যবহার করতে পারে।পলিমরফিজম শব্দের অর্থ "একাধিক আকার ধারণ করা"। প্রোগ্রামিংয়ে এটি একটি বৈশিষ্ট্য, যার মাধ্যমে একই মেথড বা অপারেটর বিভিন্ন পরিস্থিতিতে ভিন্ন ভিন্ন আকারে কাজ করতে পারে। C++ এ পলিমরফিজম দুই প্রকার:
কাম্পাইল টাইম পলিমরফিজম:
রানটাইম পলিমরফিজম:
#include <iostream>
using namespace std;
class Print {
public:
void display(int i) {
cout << "Integer: " << i << endl;
}
void display(double d) {
cout << "Double: " << d << endl;
}
void display(string str) {
cout << "String: " << str << endl;
}
};
int main() {
Print printer;
printer.display(5);
printer.display(3.14);
printer.display("Hello");
return 0;
}
বর্ণনা:
display
ফাংশনটি একই নামে তিনবার সংজ্ঞায়িত করা হয়েছে, যা বিভিন্ন ডেটা টাইপের প্যারামিটার গ্রহণ করে।#include <iostream>
using namespace std;
class Animal {
public:
virtual void sound() {
cout << "Animal Sound" << endl;
}
};
class Dog : public Animal {
public:
void sound() override { // বেস ক্লাসের ফাংশন ওভাররাইড করা হয়েছে
cout << "Bark" << endl;
}
};
class Cat : public Animal {
public:
void sound() override {
cout << "Meow" << endl;
}
};
int main() {
Animal *a1 = new Dog();
Animal *a2 = new Cat();
a1->sound(); // Bark
a2->sound(); // Meow
delete a1;
delete a2;
return 0;
}
বর্ণনা:
Animal
ক্লাসে sound
নামে একটি ভার্চুয়াল ফাংশন রয়েছে। Dog
এবং Cat
ক্লাসে এই ফাংশনটি ওভাররাইড করা হয়েছে।a1
এবং a2
পয়েন্টারগুলো Animal
টাইপ হলেও তারা তাদের নিজ নিজ ক্লাসের sound()
ফাংশন কল করছে, যা পলিমরফিজমের উদাহরণ।ইনহেরিটেন্স এবং পলিমরফিজম OOP এর শক্তিশালী বৈশিষ্ট্য, যা বড় প্রোগ্রাম ও সফটওয়্যার ডেভেলপমেন্টে কার্যকরী এবং পুনঃব্যবহারযোগ্য কোড রচনা করতে সহায়ক।
common.read_more